package com.itheima.sh.a_opp_test_01;

import java.util.Scanner;

/*
    目标：定义操作电影的业务类。
    就是处理电影的业务逻辑的代码。例如电影信息系统欢迎页面、查
    看所有电影信息、根据某个电影id查看某个电影的详细信息等。
 */
public class MovieOperator {
    //1.定义成员变量保存多不电影信息，那么使用数组存储，数组类型是Movie,一部电影对应一个Movie对象
    private Movie[] movies;

    //2.满参构造方法给成员变量movies初始值
    public MovieOperator(Movie[] movies) {
        this.movies = movies;
    }

    //3.定义查询所有电影的方法
    public void printAllmovies() {
        System.out.println("------显示当前电影系统的全部电影信息-----");
        //3.1遍历数组
        for (int i = 0; i < movies.length; i++) {
            //3.2获取数组中每个电影对象
            Movie m = movies[i];
            //3.3输出
            System.out.println("电影编号：" + m.getId());
            System.out.println("电影名：" + m.getName());
            System.out.println("电影价格：" + m.getPrice());
            System.out.println("---------------------------------");

        }
    }

    //4.定义方法根据某一部电影的id展示电影详细信息
    public void searchMovieById(int id) {
         /*
            分析：根据调用者传递电影的id即形参位置的数据到数组movies中遍历数据判断和当前形参数据id
            相对的Movie对象，然后展示电影信息
         */
        System.out.println("-----------显示电影详细信息--------------");
        //4.1遍历数组
        for (int i = 0; i < movies.length; i++) {
            //4.2获取Movie对象
            Movie m = movies[i];
            //4.3获取当前电影即m的ID
            int idFormArr = m.getId();//从数组中获取的
            //4.4比较数组获取的id是否等于形参id
            if (idFormArr == id) {
                //4.5说明找到了电影，开始展示
                System.out.println("电影编号：" + m.getId());
                System.out.println("电影名：" + m.getName());
                System.out.println("电影导演：" + m.getDirector());
                System.out.println("电影主演：" + m.getActor());
                System.out.println("电影价格：" + m.getPrice());
                System.out.println("电影评分：" + m.getScore());
                System.out.println("电影简介：" + m.getInfo());
                //4.6停止当前方法
                return;
            }
        }
        //4.7如果能执行到这里说明没有执行return即没有你要输入id对应的电影，那么给出提示
        System.out.println("-------我黄某人与赌毒不共戴天-----");
    }

    //5.定义电影系统的欢迎页面 提示：1 查询全部电影信息 调用printAllMovies方法 2根据录入的id查询某个电影详细信息及调用searchMovieById
    public void start() {
        while (true) {
            System.out.println("------------电影信息系统------------");
            //5.1创建键盘录入的对象
            Scanner sc = new Scanner(System.in);
            //5.2提示信息
            System.out.println("---------请18岁以下儿童带父母一起观看-----------");
            System.out.println("1、查询全部电影信息");
            System.out.println("2、根据电影id查询电影详情");
            System.out.println("请您选择您要操作的功能：");
            //5.3获取用户的选择
            int userChice = sc.nextInt();
            //5.4多分支
            switch (userChice){
                case 1:
                    //查询全部电影信息调用PrintAllMovies方法
                    printAllmovies();
                    break;
                case 2:
                    //根据录入的id查询某个电影详细信息及调用searchMovieById
                    System.out.println("请您输入您要查询的电影编号：");
                    int id=sc.nextInt();
                    //调用方法
                    searchMovieById(id);
                    break;
                default:
                    System.out.println("18岁以下儿童不带父母一起观看，无法打开网址");
                    break;
            }
        }
    }
}
